package com.jomoo.common.ajax.action;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.convention.annotation.Action;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSON;
import com.jomoo.common.ajax.service.JqueryService;
import com.jomoo.common.utils.BaseAction;

/**
 * jomoo平台下拉菜单控制层
 * 
 * @author 郝思聪
 * @date 2016年12月21日
 */
@Scope("prototype")
@Component("JqueryAction")
public class JqueryAction extends BaseAction
{

	private static final long serialVersionUID = -6112539252016286714L;

	Log log = LogFactory.getLog(JqueryAction.class);

	@Resource
	JqueryService jqueryService;

	/**
	 * 获取产品分类（用户管理）
	 * 
	 * @return String
	 */
	@SuppressWarnings("rawtypes")
	@Action(value = "getProducts")
	public void getProducts()
	{
		// 产品集合容器
		List proList = null;

		String strCustomerId = request.getParameter("custid");
		Integer iCustomerId = null;

		if (StringUtils.isNotBlank(strCustomerId))
		{
			iCustomerId = Integer.parseInt(strCustomerId);
		}

		try
		{
			// 从数据库中获取所有用户角色操作
			proList = jqueryService.getProducts(iCustomerId);

			if (null == proList || 0 == proList.size())
			{
				log.info("获取所有产品分类: 错误（表数据可能为空）！");
			}
			else
			{
				// 直接用fastjson解析为json字符串输出
				returnData(JSON.toJSONString(proList));
			}
		}
		catch (Exception e)
		{
			log.error("查询下拉产品分类异常：" + e.getMessage());
		}
	}

	/**
	 * 获取产品规格
	 * 
	 * @return String
	 */
	@SuppressWarnings("rawtypes")
	@Action(value = "getProductSpec")
	public void getProductSpec()
	{
		// 产品规格集合容器
		List proList = null;

		String strProductId = request.getParameter("proid");
		Integer iProductId = null;

		if (null != strProductId && !"".equals(strProductId))
		{
			iProductId = Integer.parseInt(strProductId);
		}

		try
		{
			// 从数据库中获取所有用户角色操作
			proList = jqueryService.getProductSpec(iProductId);

			if (null == proList || 0 == proList.size())
			{
				log.info("获取所有产品分类规格: 错误（表数据可能为空）！");
			}
			else
			{

				// 直接用fastjson解析为json字符串输出
				returnData(JSON.toJSONString(proList));
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
			log.error("查询下拉产品分类规格异常：" + e.getMessage());
		}
	}

	/**
	 * 获取所有一级城市
	 * 
	 * @return String
	 */
	@SuppressWarnings("rawtypes")
	@Action(value = "getFirstCity")
	public void getFirstCity()
	{
		// 产品规格集合容器
		List fcityList = null;

		try
		{
			// 从数据库中获取所有一级城市
			fcityList = jqueryService.getFirstCity();

			if (null == fcityList || 0 == fcityList.size())
			{
				log.info("获取所有一级城市: 错误（表数据可能为空）！");
			}
			else
			{

				// 直接用fastjson解析为json字符串输出
				returnData(JSON.toJSONString(fcityList));
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
			log.error("查询一级城市异常：" + e.getMessage());
		}
	}

	/**
	 * 获取所有二级城市
	 * 
	 * @return String
	 */
	@SuppressWarnings("rawtypes")
	@Action(value = "getSecondCitys")
	public void getSecondCitys()
	{
		// 产品规格集合容器
		List proList = null;

		String strSCity = request.getParameter("scityid");
		Integer iSecCityid = null;

		if (null != strSCity && !"".equals(strSCity))
		{
			iSecCityid = Integer.parseInt(strSCity);
		}
		try
		{
			// 从数据库中获取所有用户角色操作
			proList = jqueryService.getSecondCity(iSecCityid);

			if (null == proList || 0 == proList.size())
			{
				log.info("获取所有二级城市: 错误（表数据可能为空）！");
			}
			else
			{

				// 直接用fastjson解析为json字符串输出
				returnData(JSON.toJSONString(proList));
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
			log.error("查询所有二级城市异常：" + e.getMessage());
		}
	}

	/**
	 * 获取所有客户
	 * 
	 * @return String
	 */
	@SuppressWarnings("rawtypes")
	@Action(value = "getCustomers")
	public void getCustomers()
	{
		// 产品规格集合容器
		List customerList = null;

		try
		{
			// 从数据库中获取所有用户角色操作
			customerList = jqueryService.getCustomers();

			if (null == customerList || 0 == customerList.size())
			{
				log.info("获取所有客户: 错误（表数据可能为空）！");
			}
			else
			{

				// 直接用fastjson解析为json字符串输出
				returnData(JSON.toJSONString(customerList));
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
			log.error("查询所有客户异常：" + e.getMessage());
		}
	}

	/**
	 * 获取所有安装类型
	 * 
	 * @return String
	 */
	@SuppressWarnings("rawtypes")
	@Action(value = "getSetupTypes")
	public void getSetupTypes()
	{
		// 产品规格集合容器
		List repairList = null;

		try
		{
			// 从数据库中获取所有安装类型操作
			repairList = jqueryService.getSetupType();

			if (null == repairList || 0 == repairList.size())
			{
				log.info("获取所有安装类型: 错误（表数据可能为空）！");
			}
			else
			{

				// 直接用fastjson解析为json字符串输出
				returnData(JSON.toJSONString(repairList));
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
			log.error("查询所有安装类型异常：" + e.getMessage());
		}
	}

	/**
	 * 获取所有安装状态
	 * 
	 * @return String
	 */
	@SuppressWarnings("rawtypes")
	@Action(value = "getSetupState")
	public void getSetupState()
	{
		// 产品规格集合容器
		List repairList = null;

		String strState = request.getParameter("statusType");
		
		String strAllFlag = request.getParameter("totalflag");

		try
		{
			// 从数据库中获取所有安装类型操作
			repairList = jqueryService.getAllStates(strState, strAllFlag);

			if (null == repairList || 0 == repairList.size())
			{
				log.info("获取所有安装状态: 错误（表数据可能为空）！");
			}
			else
			{

				// 直接用fastjson解析为json字符串输出
				returnData(JSON.toJSONString(repairList));
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
			log.error("查询所有安装状态异常：" + e.getMessage());
		}
	}

	/**
	 * 获取所有类型数量
	 * @return String
	 */
	@Action(value = "getCounts")
	public void getCounts()
	{
		Map<String, Integer> countMap = new HashMap<String, Integer>(10);

		Integer iWait = null;
		Integer iFix = null;
		Integer iExcept = null;
		Integer iYanchi = null;

		try
		{
			iWait = jqueryService.getScount("wait");

			countMap.put("waitCount", iWait);

			iFix = jqueryService.getScount("fix");

			countMap.put("fixCount", iFix);

			iExcept = jqueryService.getScount("exception");

			countMap.put("exceCount", iExcept);

			iYanchi = jqueryService.getScount("yanchi");

			countMap.put("ycCount", iYanchi);

			// 直接用fastjson解析为json字符串输出
			returnData(JSON.toJSONString(countMap));
		}
		catch (Exception e)
		{
			e.printStackTrace();
			log.error("查询所有安装状态异常：" + e.getMessage());
		}
	}

	/**
	 * 获取所有数量详情
	 * 
	 * @return String
	 */
	@SuppressWarnings("rawtypes")
	@Action(value = "getCountViews")
	public void getCountViews()
	{
		String strFlag = request.getParameter("flag");

		Integer iFlag = null;

		if (null != strFlag && !"".equals(strFlag))
		{
			iFlag = Integer.parseInt(strFlag);
		}

		List cardList = null;

		try
		{
			cardList = jqueryService.getScountViews(iFlag);

			// 直接用fastjson解析为json字符串输出
			returnData(JSON.toJSONString(cardList));
		}
		catch (Exception e)
		{
			e.printStackTrace();
			log.error("查询安装卡详情异常：" + e.getMessage());
		}
	}

	/**
	 * 获取所有类型数量
	 * 
	 * @return String
	 */
	@Action(value = "getCountsForShow")
	public void getCountsForShow()
	{
		Map<String, Boolean> countMap = new HashMap<String, Boolean>(10);

		Integer iCount;

		try
		{
			iCount = jqueryService.getCountForShow();

			if (iCount > 0)
			{
				countMap.put("show", true);
			}
			else
			{
				countMap.put("show", false);
			}

			// 直接用fastjson解析为json字符串输出
			returnData(JSON.toJSONString(countMap));
		}
		catch (Exception e)
		{
			e.printStackTrace();
			log.error("查询所有安装状态异常：" + e.getMessage());
		}
	}
}
